<?php
namespace app\model;

use think\Model;

class Role extends Model
{
    // 设置数据表名
    protected $name = 'role';
    
    // 设置字段信息
    protected $schema = [
        'id'          => 'int',
        'name'        => 'string',
        'code'        => 'string',
        'description' => 'string',
        'status'      => 'tinyint',
        'create_time' => 'datetime',
        'update_time' => 'datetime',
        'delete_time' => 'datetime',
    ];
    
    // 开启自动写入时间戳
    protected $autoWriteTimestamp = true;
    
    // 软删除
    use \think\model\concern\SoftDelete;
    protected $deleteTime = 'delete_time';
    
    // 关联用户
    public function users()
    {
        return $this->belongsToMany(User::class, 'user_role', 'role_id', 'user_id');
    }
    
    // 关联权限
    public function permissions()
    {
        return $this->belongsToMany(Permission::class, 'role_permission', 'role_id', 'permission_id');
    }
    
    // 状态获取器
    public function getStatusTextAttr()
    {
        $status = [
            0 => '禁用',
            1 => '正常'
        ];
        return $status[$this->status] ?? '未知';
    }
    
    // 搜索角色名称
    public function searchNameAttr($query, $value)
    {
        if (!empty($value)) {
            $query->where('name', 'like', '%' . $value . '%');
        }
    }
    
    // 搜索角色编码
    public function searchCodeAttr($query, $value)
    {
        if (!empty($value)) {
            $query->where('code', 'like', '%' . $value . '%');
        }
    }
    
    // 搜索角色状态
    public function searchStatusAttr($query, $value)
    {
        if (is_numeric($value)) {
            $query->where('status', $value);
        }
    }
} 